package p6;
import java.net.URL;
import javax.xml.soap.*;
public class ClienteCurrency {
	SOAPMessage message;
	SOAPEnvelope envelope;
	SOAPBody body;
	SOAPConnection con;
	public static void main(String[] args) {
		try {
			System.setProperty("http.proxyHost", "proxy.upf.es");
			System.setProperty("http.proxyPort", "8080");
			
			ClienteCurrency call = new ClienteCurrency();
//			llamar al webservice y obtener respuesta
			call.crearMensaje(args[0]);
			call.getMensaje().writeTo(System.out);
			System.out.println("\n\n");
//			enviar mensaje y obtener respuesta
			SOAPMessage response = call.enviar();
//			imprimir XML con respuesta
			response.writeTo(System.out);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	public ClienteCurrency() throws Exception {
		this.con = SOAPConnectionFactory.newInstance().createConnection();
		this.message = MessageFactory.newInstance().createMessage();
		this.envelope = message.getSOAPPart().getEnvelope();
		this.body = envelope.getBody();
	}
	public void crearMensaje(String codigo) throws Exception {

//		namespace (primeras lineas del xml)
		String ns = "http://www.webserviceX.NET/";
		message.getMimeHeaders().setHeader("SOAPAction", "http://www.webserviceX.NET/ConversionRate");
//		crear un elemento, y asignar un prefijo comun "pre"
//		crear el elemento con la funcion que queremos llamar
		Name operacion = envelope.createName("ConversionRate", "tns", ns);
		SOAPBodyElement op = body.addBodyElement(operacion);
//		crear un elemento que lo colgaremos a la operacion
		Name param1 = envelope.createName("FromCurrency", "tns", ns);
		SOAPElement par1 = op.addChildElement(param1);
		par1.addTextNode("DKK");
		Name param2 = envelope.createName("ToCurrency", "tns", ns);
		SOAPElement par2 = op.addChildElement(param2);
		par2.addTextNode("NAD");
	}
	public SOAPMessage getMensaje() {
		return message;
	}
	public SOAPMessage enviar() throws Exception {
//		url que publica el WSDL
		URL endpoint = new URL(
		"http://www.webservicex.com/CurrencyConvertor.asmx?wsdl");
		return con.call(message, endpoint);
	}
}